package com.gitee.loyo.post;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.util.List;

/**
 * T/CEC 102.3-2016
 * 6.7 推送充电状态
 * 6.7.3 输入参数
 */
@Data
@Accessors(chain = true)
public class NotifyEquipChargeStatusPost implements Serializable {
    /**
     * 充电订单号
     */
    @JsonProperty("StartChargeSeq")
    private String startChargeSeq;
    /**
     * 充电订单状态
     */
    @JsonProperty("StartChargeSeqStat")
    private Integer startChargeSeqStat;
    /**
     * 充电设备接口编码
     */
    @JsonProperty("ConnectorID")
    private String connectorId;
    /**
     * 充电设备接口状态
     */
    @JsonProperty("ConnectorStatus")
    private Integer connectorStatus;
    /**
     * A相电流
     */
    @JsonProperty("CurrentA")
    private Double currentA;
    /**
     * B相电流
     */
    @JsonProperty("CurrentB")
    private Double currentB;
    /**
     * C相电流
     */
    @JsonProperty("CurrentC")
    private Double currentC;
    /**
     * A相电压
     */
    @JsonProperty("VoltageA")
    private Double voltageA;
    /**
     * B相电压
     */
    @JsonProperty("VoltageB")
    private Double voltageB;
    /**
     * C相电压
     */
    @JsonProperty("VoltageC")
    private Double voltageC;
    /**
     * 电池剩余电量
     */
    @JsonProperty("Soc")
    private Double soc;
    /**
     * 开始充电时间
     */
    @JsonProperty("StartTime")
    private String startTime;
    /**
     * 本次采样时间
     */
    @JsonProperty("EndTime")
    private String endTime;
    /**
     * 累计充电量
     */
    @JsonProperty("TotalPower")
    private Double totalPower;
    /**
     * 累计电费
     */
    @JsonProperty("ElecMoney")
    private Double elecMoney;
    /**
     * 累计服务费
     */
    @JsonProperty("SeviceMoney")
    private Double serviceMoney;
    /**
     * 累计总金额
     */
    @JsonProperty("TotalMoney")
    private Double totalMoney;
    /**
     * 时段数N
     */
    @JsonProperty("SumPeriod")
    private Integer sumPeriod;
    /**
     * 充电明细
     */
    @JsonProperty("ChargeDetails")
    private List<ChargeDetail> chargeDetails;
    /**
     * 启动中
     * @return
     */
    public boolean isStarting(){
        return startChargeSeqStat != null && startChargeSeqStat.intValue() == 1;
    }

    /**
     * 充电中
     * @return
     */
    public boolean isCharging(){
        return startChargeSeqStat != null && startChargeSeqStat.intValue() == 2;
    }

    /**
     * 停止中
     * @return
     */
    public boolean isStopping(){
        return startChargeSeqStat != null && startChargeSeqStat.intValue() == 3;
    }

    /**
     * 已结束
     * @return
     */
    public boolean isFinished(){
        return startChargeSeqStat != null && startChargeSeqStat.intValue() == 4;
    }

    /**
     * 充电明细信息体
     */
    @Data
    public static class ChargeDetail{
        /**
         * 开始时间
         */
        @JsonProperty("DetailStartTime")
        private String detailStartTime;
        /**
         * 结束时间
         */
        @JsonProperty("DetailEndTime")
        private String detailEndTime;
        /**
         * 时段电价
         */
        @JsonProperty("ElecPrice")
        private Double elecPrice;
        /**
         * 时段服务费价格
         */
        @JsonProperty("SevicePrice")
        private Double servicePrice;
        /**
         * 时段充电量
         */
        @JsonProperty("DetailPower")
        private Double detailPower;
        /**
         * 时段电费
         */
        @JsonProperty("DetailElecMoney")
        private Double detailElecMoney;
        /**
         * 时段服务费
         */
        @JsonProperty("DetailSeviceMoney")
        private Double detailServiceMoney;
    }
}
